D3 弦布图
2022-04-21

弦图(Chord Diagram),是一种表示一组元素之间关系的学术图表之一。主要可以分为外部节点和内部弦。通过弦图布局(Chord Layout)可以将方块矩阵转换成一个可用于绘制节点和弦的数据。
| ID | DA | FA |
|---|---|---|
| d3.layout.chord() | 创建弦布图 | |
| chord.matrix() | 设置或获取矩阵(必须为方块矩阵,行列数相等) | |
| chord.padding() | 设置或获取元素节点之间的间距,默认为0 |
|
| chord.sortGroups() | 对节点进行排序 | |
| chord.sortSubgroups() | 对各点所在行的数据进行排序 | |
| chord.sortChords() | 对弦进行排序 | |
| chord.chords() | 返回弦数组 | |
| chord.groups() | 返回节点数组 |
布局运算

使用弦布图(Chord Layout)可以直接通过 d3 来计算出弧的startAngle and endAngle等,并通过使用chords() and groups()来直接输出弦图的弦数组以及节点数组,需要注意的是弦图使用的数据添加方法采用了方块矩阵
1 | var padding = { |
弦布图
在下述 code 中分别添加了三个<g>元素,分别包括了位置、节点、弦,分别代表了gOuter(g)、gInner(g)、path(outerPath)、text(outerText)、innerPath(path),在 web 展示的结构是:
1 | <svg> |
1 | /* 基本 svg 规格 */ |
less
1 | @colorWhite: #ffffff; |
为了体现出外弦和节点的区分,我们需要为outerPath(外弦路径)、outerText(外弦文字/节点文字)、innerPath(内弦路径)添加样式。
css
1 | .outerPath{ |
behavior

为了增加观感上的体验,我们为弦布图增加了behavior,主要通过使用使用mouseover(鼠标光标) and mouseout(光标移出),然后通过d.source.index !=i && d.target.index !=i排除光标选择外的数据,在通过添加过渡来实现效果。
1 | /* |_ 鼠标事件 |
